Linux(Ubuntu 20.04 LTS)之shell使用基础教程

您所在的位置:网站首页 ubuntu shell脚本入门 Linux(Ubuntu 20.04 LTS)之shell使用基础教程

Linux(Ubuntu 20.04 LTS)之shell使用基础教程

2023-08-12 03:06| 来源: 网络整理| 查看: 265

Linux(Ubuntu 20.04 LTS)之shell使用基础教程

 

我在此使用的是VMware虚拟机安装的Ubuntu 20.04 LTS。

 

Shell是linux系统的用户界面。Shell即是一个命令解释器,它解释由用户输入的命令并且把它们送到内核去执行。又是一种程序设计语言,具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,允许用户编写由shell命令组成的程序。

 

在ubuntu系统桌面中按下Ctrl+Alt+T组合键,可打开shell(Terminal窗口),参见下图:

 

其中$是终端命令提示符

@和:是分隔符号,#或$是命令提示符,如果是超级用户(root 用户),提示符就是#;如果是普通用户,提示符就是$。

@前面是用户名,这里是wang

@后至:之间是表示当前系统的主机名(计算机名),这里是wang-virtual-machine

:至#或$之间是用户当前所在的目录,这里是~,~代表home 目录。

 

顺便指明,终端下默认的复制(copy)粘贴(viscidity,paste)快捷键是 Ctrl+Shift+C,Ctrl+Shift+V。

Linux中文件扩展名

windows里通过扩展名来区分文件类型的。linux里文件扩展名和文件类型没有关系。但为了容易区分和兼容用户使用windows的习惯,我们还是会用扩展名来表示文件类型。举例如下:

☆ 源码.tar、.tar.gz、.tgz、.zip、.tar.bz表示压缩文件,创建命令一般为tar,gzip,zip等。

☆ .sh表示shell脚本文件,通过shell语言开发的程序。

☆ .pl表示perl语言文件,通过perl语言开发的程序。

☆ .py表示python语言文件,通过python语言开发的程序。

☆ .html、.htm、.php、.jsp、.do表示网页语言的文件。

☆ .conf表示系统服务的配置文件。

☆ .rpm表示rpm安装包文件。

linux下文件的一些文件颜色的含义

☆绿色-->代表可执行文件,(绿色代表通行证的意思)呵呵

☆红色-->代表压缩文件

☆深蓝色-->代表目录

☆浅蓝色-->代表链接文件

☆灰色-->代表其它的一些文件

 

查看当前 Linux 的默认 Shell

echo $SHELL

 

可以通过 cat /etc/shells 来查看 linux 支持的 shell。

☆sh

sh 的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。

☆bash

这是默认的 shell,,本教程也基于 bash 编写。bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。

在现代的 Linux 上,sh 已经被 bash 代替,bash是sh的增强版本。

☆dash

Debian Almquist Shell(dash),从NetBSD移植到Linux。Dash Shell 比 Bash Shell 小的多。

☆rbash

受限shell是LinuxShell限制一些bash shell中的功能,该限制很好地实现了命令以及脚本在受限shell中运行。 它为Linux中的bash shell提供了一个额外的安全层。

Ubuntu 20.04 LTS之shell的切换

可以在shell解释器中直接输入shell名称进行切换

输入exit退出

参见下图:

 

在终端命令行界面中可以使用与文件管理相关的命令

root用户具有系统中的最高权限。由于Ubuntu系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令:

sudo passwd 或者sudo passwd root

输入当前登录电脑上的密码。然后设置root密码,重复密码。参见下图

提示:sudo是Ubuntu系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。

 

可以使用”sudo adduser 用户名”新建用户。

 

删除用户使用“userdel 用户名”命令,最好将它留在系统上的文件也删除掉,可以使用“userdel -r 用户名”来实现。

 

重新设置普通用户密码

passwd 用户名

重新设置root用户密码

sudo passwd root

 

 

详细查看Ubuntu版本号:

lsb_release -a

参见下图:

 

简洁查看ubuntu版本

cat /etc/issue

注意cat后有空格,参见下图:

 

显示linux的内核版本和系统是多少位的:X86_64代表系统是64位的

uname -a

参见下图:

 

 

显示linux的内核版本和gcc编译器版本号及linux变种的版本

cat /proc/version

参见下图:

 

linux中cat是 concatenate 的缩写,此令用以将文件、标准输入内容打印至标准输出,常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。

注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S停止滚屏;Ctrl+QQ回复滚屏;Ctrl+C终止该命令,并回到Shell提示符状态。

还能查看系统信息。

 

查看当前工作目录命令pwd

 

新建目录(文件夹)命令mkdir

例如、在当前工作目录中新建子目录test

mkdir test

 

列出文件夹下包含的文件信息命令ls

 

 

用cd命令进入/dev目录

 

列出文件的详细信息,如文件的类型、读写权限列表,创建者,创建时间,等,ls -l

其中drwxr-xr-x说明

第一个符号表明文件类型。在Linux系统中,一切皆文件。Linux系统中的文件类型:

文件类型

文件类型标识

普通文件

-

目录文件

d

块设备文件

b

字符设备文件

c

管道文件

p

套接字(socket)文件

s

符号链接文件

l

后面9位标明文件权限,第一个三位,是所有者(user)拥有的权限,接着3位代表的是组群(group)拥有的权限,最后3位代表其他人(other)拥有的权限。r 读权限read ,w 写权限write ,x 操作权限execute。

 

更改当前的工作目录命令cd

例如、更改当前的工作目录为 test

cd test

 

删除文件或目录命令rm

例如、删除 test目录

rm -r test

例如、删除test01.c文件

rm test01.c

 

 

查看文件内容cat

例如、查看文件test01.c内容

cat test01.c

 

 

查看所有进程

ps -ef

 

实时显示进程状态

top

按ctrl+c可以退出显示进程状态

 

查看环境变量

Env

 

搜索文件

根据 文件或目录名称 搜索,格式如下:

find

: 所要搜索的目录及其所有子目录。默认为当前目录。

: 所要搜索的文件的特征。-name或者-iname 搜索字符,-name区分大小写,-iname一个不区分大小写。通配符*、?,*代表0至多个任意字符,?代表1个任意字符。

: 对搜索结果进行特定的处理。 如-ls 表示显示它们的详细信息,

如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件)

例如

find . -name "*.txt" -ls

搜索当前目录中,所有.txt的文件,并显示它们的详细信息。参见下图:

 

又如find . -name "*.txt" -size +100c

其中-size 大小描述

+n 表示大于,-n 表示小于,n 表示等于;c 表示字节,k表示千字节,M表示兆字节。

 

清屏

clear

清屏后,提示符移到左上角。

 

命令帮助的查看

按内置(builtin、内建)命令和非内置命令有所不同。可以使用type 命令名 分辨之:

type cd

type su

 

内置(builtin、内建)命令帮助的查看:

help 命令名

命令名 --help

help cd

 

非内置命令帮助的查看:

命令名 --help

su –help

 

【特别提示、对于非内置命令查看帮助,可用 命令名 --help,而用 help 命令名,无效果,参见下图:

 

压缩与解压

首先要了解两个基础概念

打包:将一堆文件或目录什么的变成一个总的文件。

压缩:将一个大的文件经过某种压缩算法变成一个小文件。

为什么要区分这两个概念呢?因为Linux中的很多压缩程序只能针对一个文件进行压缩,所以当你想要压缩一大堆文件时,首先需要打个包,然后压缩。

最常用的打包命令是 tar,使用 tar 程序打出来的包我们常称为 tar 包,tar 包文件的命令通常都是以 .tar 结尾的。生成 tar 包后,就可以用其它的程序来进行压缩了,该命令的基本格式为:

tar [选项] 源文件或目录

常用选项及含义

选项

含义

-c

产生新的包。

-f 包名

指定包的文件名。包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;

-v

显示处理(打包)的过程;

-u

更新原压缩包中的文件,仅将较新的文件附加到存档中;

-r

向压缩归档文件末尾追加文件;

在使用 tar 命令指定选项时可以不在选项前面输入“-”。例如,使用“cvf”选项和 “-cvf”起到的作用一样。

 

当 tar 命令用于对 tar 包做解打包操作时,该命令的基本格式如下:

tar [选项] 压缩包

解打包常用选项及含义

选项

含义

-x

对 tar 包做解打包操作。

-f 包名

指定要解压的 tar 包的包名。

-t

只查看 tar 包中有哪些文件或目录,不对 tar 包做解打包操作。

-C 目录

指定解打包位置。

-v

显示处理(解包)的过程。

tar -cf all.tar *.jpg

这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

tar -rf all.tar *.gif

这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

tar -uf all.tar logo.gif

这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

tar -tf all.tar 

这条命令是列出all.tar包中所有文件,-t是列出文件的意思

tar -xf all.tar

这条命令是解出all.tar包中所有文件,-x是解开的意思

tar -cvf ana.tar anaconda-ks.cfg /tmp/

把anaconda-ks.cfg文件和/tmp目录打包成ana.tar文件包。tar命令也可以打包多个文件或目录,只要用空格分开即可。

tar -xvf ana.tar

解打包到当前目录下。

tar -xvf ana.tar -C /tmp

把文件包ana.tar解打包到/tmp/目录下,如果想要指定解压位置,则需要使用 "-C(大写)" 选项。

 

Linux用户身份切换

在日常工作中,尽量使用普通用户账号操作,当需要root权限的时候再通过身份切换的方式切换至root管理员,这样能保证系统的安全性。使用普通账号的安全性主要体现在两个方面:

防止因误操作而删除了系统重要文件;

创建一些系统账户专门用来启动某些服务,这样即使该服务被攻陷,系统仍然是安全的。

方式一:su

该命令可以将身份切换至指定账户,但需要输入该账户的密码。

命令格式

su [-lm] [-c 命令] username

若不加username则表示切换至root

使用su和su -均能切换至root账户,但不加-会使很多变量仍然保持切换前用户的变量,而加了-之后则参数将会完全变成root的参数,尤其是环境变量PATH,从而能够直接使用某些命令,而无需指定绝对路径。

若只想执行一个root权限才能执行的命令的时候,可以将命令直接写在-c的后面,这样无需切换身份,如:

su -c vim /etc/shadow

 

方式二:sudo

使用su切换身份需要直到root账号的密码,这样并不安全。为了提高安全性,我们可以使用sudo来执行需要root权限的功能。

 sudo由root指定,指定后用户只需输入自己账号的密码就能申请到root权限,而无需告诉任何人root密码,因此安全了不少。

命令格式

sudo [-b] [-u username] 需要执行的命令

-b:使后续的命令自行执行,而不与目前的shell产生影响。

 

shell脚本编程

注释符号#

放在需注释内容的前面。注意#!不要和混淆,#!用于指明脚本的解释器程序的路径,如#!/bin/bash、#!/bin/sh。

Shell变量

Linux Shell中的变量分为用户自定义变量,环境变量,位置参数变量和预定义变量。可以通过set命令查看系统中存在的所有变量。

返回变量 ${变量名}

删除变量用 unset 变量名

shell中默认把变量值当作字符串

age=19

age=${age}+1

echo ${age}

输出结果为19+1,而不是20,因为shell将其解释为字符串,而不是数学运算。参见下图:

 

可以用let命令使其进行数学运算,例如:

age2=19

let age2=${age2}+1

echo ${age2}

参见下图:

 

也可以用declare把变量定义为整型。例如:

declare -i age3=25

age3=${age3}+1

echo ${age3}

这里就用 -i 选项把age定义为整型的了。参见下图:

 

在shell中可以使用数组,例如:

array[0]=0

array[1]=1

array[2]=2

则array就是一个数组,也可以这样给数组初始化:

array=(0 1 2)

元素之间以空格分隔。

可以通过 ${array[$i]}来访问array中某个元素,${array[*]} 的返回值即数组的所有元素组成的串,${#array[*]} 的返回值即数组的元素个数,${array[*]:0:2} 返回第一个和第二个元素组成的串。0表示开始的位置,2表示要返回的元素个数,开始位置可以为0-2(0减去2)之类的,表示从倒数第二个元素开始。

 

Shell脚本通常都是以.sh 为后缀名的

编写一个Shell脚本文件,内容如下

#!/bin/bash

for ((i=0; i



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3